package com.zhijian.medical.entity.vo.request;

import com.zhijian.medical.entity.vo.response.CodeVo;
import com.zhijian.medical.entity.vo.response.YjsYjCgVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;

/**
 * 人员新增请求vo
 *
 * @author HCG
 * @version 1.0
 * @date 2022/1/21
 */
@Api(tags = "人员新增请求vo")
@Data
public class PersonSaveOrUpdateVo extends CodeVo implements Serializable {
    private static final long serialVersionUID = -7305078779171809738L;

    /**
     * 主键id
     */
    @ApiModelProperty(value = "主键id", hidden = true)
    private Long id;

    /**
     * 负责人名称
     */
    @ApiModelProperty("负责人名称")
    @NotBlank(message = "负责人名称不能为空")
    private String name;

    /**
     * 负责人电话
     */
    @ApiModelProperty("负责人电话")
    @NotBlank(message = "负责人电话不能为空")
    private String phone;

    /**
     * 密码
     */
    @ApiModelProperty(value = "密码", hidden = true)
    private String password;

    /**
     * 职位、科室id
     */
    @ApiModelProperty("职位、科室id")
    private Long groupId;

    /**
     * 工号
     */
    @ApiModelProperty("工号")
    private String jobNumber;

    /**
     * 状态，0：在职，1：离职，2：进修
     */
    @ApiModelProperty("状态，0：在职，1：离职，2：进修")
    private Byte status;

    /**
     * 备注
     */
    @ApiModelProperty("备注")
    private String note;

    /**
     * 邮箱地址
     */
    @ApiModelProperty("邮箱地址")
    private String email;

    /**
     * 角色id
     */
    @ApiModelProperty("角色id")
    private List<Long> roleIds;

    /**
     * 类型，0：在职员工，1：规培生，2：进修生，3：研究生
     */
    @ApiModelProperty("类型，0：在职员工，1：规培生，2：进修生，3：研究生")
    private Byte type;

    /**
     * 头像
     */
    @ApiModelProperty("头像")
    private String avatar;

    /**
     * 年份，只有规培生才有
     */
    @ApiModelProperty("年份，只有规培生才有")
    private String year;

    /**
     * 实习生、研究生、辅助人员状态
     */
    @ApiModelProperty("实习生、研究生、辅助人员状态")
    private String stuStatus;

    /**
     * 学生状态第二级
     */
    @ApiModelProperty("学生状态第二级")
    private String stuStatusChild;

    /**
     * 辅助人员公司名称
     */
    @ApiModelProperty("辅助人员公司名称")
    private String fzCompany;

    /**
     * 辅助人员岗位
     */
    @ApiModelProperty("辅助人员岗位")
    private String fzGw;

    /**
     * 实习证号
     */
    @ApiModelProperty("实习证号")
    private String sxzh;

    /**
     * 职务、科室
     */
    @ApiModelProperty("职务、科室")
    private String zwKs;

    /**
     * 访问时间
     */
    @ApiModelProperty("访问时间")
    private String visitTime;

    /**
     * 签字图片地址
     */
    @ApiModelProperty("签字图片地址")
    private String signPic;


    //*********************singleDetail**********************

    /**
     * 性别，0：男，1：女
     */
    @ApiModelProperty("性别，0：男，1：女")
    private Byte sex;

    /**
     * 生日，格式为'2001-01'
     */
    @ApiModelProperty("生日，格式为'2001-01'")
    private String birthday;

    /**
     * 民族
     */
    @ApiModelProperty("民族")
    private String nation;

    /**
     * 职务
     */
    @ApiModelProperty("职务")
    private String position;

    /**
     * 职称
     */
    @ApiModelProperty("职称")
    private String positionalTitles;

    /**
     * 专业
     */
    @ApiModelProperty("专业")
    private String major;

    /**
     * 最高学历
     */
    @ApiModelProperty("最高学历")
    private String highestEducationalBackground;

    /**
     * 最高学位
     */
    @ApiModelProperty("最高学位")
    private String highestDegree;

    /**
     * 政治面貌
     */
    @ApiModelProperty("政治面貌")
    private String politicalStatus;

    /**
     * 身份证号
     */
    @ApiModelProperty("身份证号")
    private String identityCardNumber;

    /**
     * 家庭住址
     */
    @ApiModelProperty("家庭住址")
    private String familyAddress;

    /**
     * 社会团体/学术机构任职情况
     */
    @ApiModelProperty("社会团体/学术机构任职情况")
    private String groupTakeOfficeCondition;

    /**
     * 版本号
     */
    @ApiModelProperty("版本号")
    private String versionNumber;

    /**
     * 表格编号
     */
    @ApiModelProperty("表格编号")
    private String formNumber;

    /**
     * 单位
     */
    @ApiModelProperty("单位")
    private String company;

    /**
     * 科室名称，只有专项培训人员才有
     */
    @ApiModelProperty("科室名称，只有专项培训人员才有")
    private String groupName;

    /**
     * 入科时间
     */
    @ApiModelProperty("入科时间")
    private String joinDepartmentTime;

    /**
     * 进修专业，诊断、技术、分子
     */
    @ApiModelProperty("进修专业，诊断、技术、分子")
    private String jxMajor;

    /**
     * 进修开始时间
     */
    @ApiModelProperty("进修开始时间")
    private String jxStartDate;

    /**
     * 进修结束时间
     */
    @ApiModelProperty("进修结束时间")
    private String jxEndDate;

    /**
     * 带教老师
     */
    @ApiModelProperty("带教老师")
    private String teacher;

    /**
     * 原单位
     */
    @ApiModelProperty("原单位")
    private String exCompany;

    /**
     * 原单位等级
     */
    @ApiModelProperty("原单位等级")
    private String exCompanyLevel;

    /**
     * 工作年限
     */
    @ApiModelProperty("工作年限")
    private String workYear;

    /**
     * 进修工号
     */
    @ApiModelProperty("进修工号")
    private String jxJobNumber;

    /**
     * 银行卡号
     */
    @ApiModelProperty("银行卡号")
    private String bankNumber;

    /**
     * 紧急联系人姓名
     */
    @ApiModelProperty("紧急联系人姓名")
    private String contactPerson;

    /**
     * 紧急联系人电话
     */
    @ApiModelProperty("紧急联系人电话")
    private String contactPersonPhone;

    /**
     * 是否参加诊断组亚专科培训，1：是，0：否
     */
    @ApiModelProperty("是否参加诊断组亚专科培训，1：是，0：否")
    private Byte weatherJoinYzkPx;

    /**
     * 规培专业，病理、影像、神内、肿瘤
     */
    @ApiModelProperty("规培专业，病理、影像、神内、肿瘤")
    private String gpMajor;

    /**
     * 规培开始日期
     */
    @ApiModelProperty("规培开始日期")
    private String gpStartDate;

    /**
     * 规培结束日期
     */
    @ApiModelProperty("规培结束日期")
    private String gpEndDate;

    /**
     * 导师
     */
    @ApiModelProperty("导师")
    private String mentor;

    /**
     * 培养方式（研究生里是下拉 全日制培养/同等学历/其它）
     */
    @ApiModelProperty("培养方式（研究生里是下拉 全日制培养/同等学历/其它）")
    private String trainType;

    /**
     * 学位类型，学术型硕士、专业型硕士、博士
     */
    @ApiModelProperty("学位类型，学术型硕士、专业型硕士、博士")
    private String degreeType;

    /**
     * 研究成果（研究生阶段）JSON
     */
    @ApiModelProperty("研究成果（研究生阶段）JSON")
    private String yjCg;

    /**
     * 实习学校
     */
    @ApiModelProperty("实习学校")
    private String sxSchool;

    /**
     * 实习开始时间
     */
    @ApiModelProperty("实习开始时间")
    private String sxStartDate;

    /**
     * 实习结束时间
     */
    @ApiModelProperty("实习结束时间")
    private String sxEndDate;

    /**
     * 实习工号
     */
    @ApiModelProperty("实习工号")
    private String sxJobNumber;

    /**
     * 学校联络员
     */
    @ApiModelProperty("学校联络员")
    private String schoolContactPerson;

    /**
     * 学校联络员手机号
     */
    @ApiModelProperty("学校联络员手机号")
    private String schoolContactPersonPhone;

    /**
     * 主要岗位
     */
    @ApiModelProperty("主要岗位")
    private String mainPost;

    /**
     * 是否有PCR上岗证，1：有，0：否
     */
    @ApiModelProperty("是否有PCR上岗证，1：有，0：否")
    private Byte weatherPcr;

    /**
     * PCR上岗证类别，肿瘤、感染、代谢、遗传
     */
    @ApiModelProperty("PCR上岗证类别，肿瘤、感染、代谢、遗传")
    private String pcrType;

    /**
     * 学校名称
     */
    @ApiModelProperty("学校名称")
    private String school;

    /**
     * 研究成果（研究生阶段）列表
     */
    @ApiModelProperty("研究成果（研究生阶段）列表")
    private List<YjsYjCgVo> yjsYjCgList;

    /**
     * 研究生学号
     */
    @ApiModelProperty("研究生学号")
    private String yjsXh;

    /**
     * 研究生意向调查
     */
    @ApiModelProperty("研究生意向调查")
    private String jxsYxdc;

    /**
     * 研究生意向调查输入框内容
     */
    @ApiModelProperty("研究生意向调查输入框内容")
    private String jxsYxdcInput;

    /**
     * 辅助人员PCR上岗证，文件地址数组
     */
    @ApiModelProperty("辅助人员PCR上岗证，文件地址数组")
    private List<FileSaveOrUpdateVo> fzPcrFilePathList;

    /**
     * 其他人员访问概括，文件地址数组
     */
    @ApiModelProperty("其他人员访问概括，文件地址数组")
    private List<FileSaveOrUpdateVo> visitFilePathList;

    //*********************experience**********************

    /**
     * 学习经历
     */
    @ApiModelProperty("学习经历")
    private List<PersonExperienceSaveOrUpdateVo> studyExperiences;

    /**
     * 工作经历
     */
    @ApiModelProperty("工作经历")
    private List<PersonExperienceSaveOrUpdateVo> workExperiences;

    @Api(tags = "人员学习or工作经历新增or修改vo")
    @Data
    public static class PersonExperienceSaveOrUpdateVo {

        /**
         * 开始时间，格式为'2020.9'
         */
        @ApiModelProperty("开始时间，格式为'2020.9'")
        private String startTime;

        /**
         * 结束时间，格式为'2020.9'
         */
        @ApiModelProperty("结束时间，格式为'2020.9'")
        private String endTime;

        /**
         * 详情，学校名称及专业or工作单位及所在部门
         */
        @ApiModelProperty("详情，学校名称及专业or工作单位及所在部门")
        private String information;

        /**
         * 备注or职称/职务
         */
        @ApiModelProperty("备注or职称/职务")
        private String note;
    }


}
